// 给vee-validate提供校验函数

import { userAccountCheck } from '@/api/user'

export default {
  // 校验函数规则: 返回true就是校验成功,返回字符串是失败的提示信息
  // 用户名校验
  account (value) {
    if (!value) return '请输入用户名'
    // 规则: 字母开头 6-20字符之间
    if (!/^[a-zA-Z]\w{5,19}$/.test(value)) return '用户名为字母开头且6-20字符之间'
    return true
  },
  // 用户校验且校验用户名唯一性
  async accountApi (value) {
    if (!value) return '请输入用户名'
    // 规则: 字母开头 6-20字符之间
    if (!/^[a-zA-Z]\w{5,19}$/.test(value)) return '用户名为字母开头且6-20字符之间'
    // 服务端校验
    const data = await userAccountCheck(value)
    if (data.result.valid) return '用户名已经存在'
    return true
  },
  //  密码校验
  password (value) {
    if (!value) return '请输入密码'
    //  规则:6-24个字符
    if (!/^\w{6,24}$/.test(value)) return '密码为6-24个字符'
    return true
  },
  //  密码校验
  rePassword (value, { form }) {
    if (!value) return '请输入密码'
    //  规则:6-24个字符
    if (!/^\w{6,24}$/.test(value)) return '密码为6-24个字符'
    // form是表单数据对象
    if (value !== form.password) return '两次密码不一致'
    return true
  },
  // 手机号校验
  mobile (value) {
    if (!value) return '请输入手机号'
    // 手机号11位,1开头 第二个数字是3-9之间的数
    if (!/^1[3-9]\d{9}$/.test(value)) return '请输入正确的手机号'
    return true
  },
  code (value) {
    if (!value) return '请输入验证码'
    // 规则:六个数字
    if (!/^\d{6}$/.test(value)) return '验证码错误'
    return true
  },
  isAgree (value) {
    if (!value) return '请勾选登录协议'
    return true
  }
}
